#!/bin/bash
#
# Copyright 2014-2015 Red Hat, Inc. and/or its affiliates
# and other contributors as indicated by the @author tags.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

apiVersion: "v1"
kind: "Template"
metadata:
  name: metrics-deployer-template
  annotations:
    description: "Template for deploying the required Metrics integration. Requires cluster-admin 'metrics-deployer' service account and 'metrics-deployer' secret."
    tags: "infrastructure"
labels:
  metrics-infra: deployer
  provider: openshift
  component: deployer
objects:
-
  apiVersion: v1
  kind: Pod
  metadata:
    generateName: metrics-deployer-
  spec:
    securityContext: {}
    containers:
    - image: ${IMAGE_PREFIX}metrics-deployer:${IMAGE_VERSION}
      name: deployer
      securityContext: {}
      volumeMounts:
      - name: secret
        mountPath: /secret
        readOnly: true
      - name: empty
        mountPath: /etc/deploy
      env:
        - name: PROJECT
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: IMAGE_PREFIX
          value: ${IMAGE_PREFIX}
        - name: IMAGE_VERSION
          value: ${IMAGE_VERSION}
        - name: MASTER_URL
          value: ${MASTER_URL}
        - name: MODE
          value: ${MODE}
        - name: REDEPLOY
          value: ${REDEPLOY}
        - name: IGNORE_PREFLIGHT
          value: ${IGNORE_PREFLIGHT}
        - name: USE_PERSISTENT_STORAGE
          value: ${USE_PERSISTENT_STORAGE}
        - name: DYNAMICALLY_PROVISION_STORAGE
          value: ${DYNAMICALLY_PROVISION_STORAGE}
        - name: HAWKULAR_METRICS_HOSTNAME
          value: ${HAWKULAR_METRICS_HOSTNAME}
        - name: CASSANDRA_NODES
          value: ${CASSANDRA_NODES}
        - name: CASSANDRA_PV_SIZE
          value: ${CASSANDRA_PV_SIZE}
        - name: METRIC_DURATION
          value: ${METRIC_DURATION}
        - name: USER_WRITE_ACCESS
          value: ${USER_WRITE_ACCESS}
        - name: HEAPSTER_NODE_ID
          value: ${HEAPSTER_NODE_ID}
        - name: METRIC_RESOLUTION
          value: ${METRIC_RESOLUTION}
    dnsPolicy: ClusterFirst
    restartPolicy: Never
    serviceAccount: metrics-deployer
    volumes:
    - name: empty
      emptyDir: {}
    - name: secret
      secret:
        secretName: metrics-deployer
parameters:
-
  description: 'Specify prefix for metrics components; e.g. for "openshift/origin-metrics-deployer:latest", set prefix "openshift/origin-"'
  name: IMAGE_PREFIX
  value: "openshift/origin-"
-
  description: 'Specify version for metrics components; e.g. for "openshift/origin-metrics-deployer:latest", set version "latest"'
  name: IMAGE_VERSION
  value: "latest"
-
  description: "Internal URL for the master, for authentication retrieval"
  name: MASTER_URL
  value: "https://kubernetes.default.svc:443"
-
  description: "External hostname where clients will reach Hawkular Metrics"
  name: HAWKULAR_METRICS_HOSTNAME
  required: true
-
  description: "Can be set to: 'preflight' to perform validation before a deployment; 'deploy' to perform an initial deployment; 'refresh' to delete and redeploy all components but to keep persisted data and routes; 'redeploy' to delete and redeploy everything (losing all data in the process); 'validate' to re-run validations after a deployment"
  name: MODE
  value: "deploy"
-
  description: "(Deprecated) Turns 'deploy' mode into 'redeploy' mode, deleting and redeploying everything (losing all data in the process)"
  name: REDEPLOY
  value: "false"
-
  description: "If preflight validation is blocking deployment and you're sure you don't care about it, this will ignore the results and proceed to deploy."
  name: IGNORE_PREFLIGHT
  value: "false"
-
  description: "Set to true for persistent storage, set to false to use non persistent storage"
  name: USE_PERSISTENT_STORAGE
  value: "true"
-
  description: "Set to true to dynamically provision storage, set to false to use use pre-created persistent volumes"
  name: DYNAMICALLY_PROVISION_STORAGE
  value: "false"
-
  description: "The number of Cassandra Nodes to deploy for the initial cluster"
  name: CASSANDRA_NODES
  value: "1"
-
  description: "The persistent volume size for each of the Cassandra nodes"
  name: CASSANDRA_PV_SIZE
  value: "10Gi"
-
  description: "How many days metrics should be stored for."
  name: METRIC_DURATION
  value: "7"
-
  description: "If a user accounts should be allowed to write metrics."
  name: USER_WRITE_ACCESS
  value: "false"
-
  description: "The identifier used when generating metric ids in Hawkular"
  name: HEAPSTER_NODE_ID
  value: "nodename"
-
  description: "How often metrics should be gathered. Defaults value of '10s' for 10 seconds"
  name: METRIC_RESOLUTION
  value: "10s"
